package dp;

import java.awt.font.FontRenderContext;

//bob的生存概率问题
public class BobLive {
    static final int N=4;
    static final int M=4;
    static final int A=1;
    static final int B=1;

    public static void main(String[] args) {
        for (int a: getLive(A,B,4)){
            System.out.println(a);
        }
    }


    /*
    * 给定五个参数 n m  a b k ，表示在一个n*m的区域 bob处在（a,b）位置，每次bob等概率可以向上下左右移动一步，bob必须走k步  走完后bob还在这个区域 则视为存活 否则视为死亡
    * 用一个长度为2的数组表示返回结果  0位表示在区域里 1表示在区域外的次数
    * */
    public static int[] getLive(int a,int b,int k){
        if (k==0){
            int[] res = new int[2];
            if (isALive(a,b)){
                res[0]+=1;
            }else {
                res[1]+=1;
            }
            return res;
        }
        int[] up=getLive(a,b+1,k-1);
        int[] down=getLive(a,b-1,k-1);
        int[] left=getLive(a-1,b,k-1);
        int[] right=getLive(a+1,b,k-1);
        int[] result=new int[2];
        result[0] = up[0]+down[0]+left[0]+right[0];
        result[1] = up[1]+down[1]+left[1]+right[1];
        return result;
    }

    //判断是否在存活区域    我们假设a b的相对初始位置为0 0（a为横向坐标，b为纵向坐标），那么区域的横向坐标为   （N-a  ~  -a) 纵向为(M-b ~  -b)
    public static boolean isALive(int a,int b){
        if (a>3 ||a<-1 ||b>3 || b<-1){
            return false;
        }
        return true;
    }
}
